package com.zhentao.vo;

import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 参数规则VO - 用于展示规则信息
 * @author zhentao
 * @date 2024-12-19
 */
@Data
public class ParamRuleVO {
    
    /**
     * 主键ID
     */
    private Long id;
    
    /**
     * 规则编码
     */
    private String ruleCode;
    
    /**
     * 规则名称
     */
    private String ruleName;
    
    /**
     * 规则类型
     */
    private String ruleType;
    
    /**
     * 规则类型描述
     */
    private String ruleTypeDesc;
    
    /**
     * 触发条件
     */
    private String triggerCondition;
    
    /**
     * 规则内容
     */
    private String ruleContent;
    
    /**
     * 规则引擎类型
     */
    private String engineType;
    
    /**
     * 规则引擎类型描述
     */
    private String engineTypeDesc;
    
    /**
     * 输入参数定义
     */
    private String inputParams;
    
    /**
     * 解析后的输入参数
     */
    private List<Map<String, Object>> inputParamsList;
    
    /**
     * 输出参数定义
     */
    private String outputParams;
    
    /**
     * 解析后的输出参数
     */
    private List<Map<String, Object>> outputParamsList;
    
    /**
     * 规则描述
     */
    private String description;
    
    /**
     * 优先级
     */
    private Integer priority;
    
    /**
     * 状态：1-启用，0-禁用
     */
    private Integer status;
    
    /**
     * 状态描述
     */
    private String statusDesc;
    
    /**
     * 是否缓存结果
     */
    private Integer cacheResult;
    
    /**
     * 缓存时间（秒）
     */
    private Integer cacheTime;
    
    /**
     * 标签
     */
    private String tags;
    
    /**
     * 标签列表
     */
    private List<String> tagList;
    
    /**
     * 执行统计 - 总执行次数
     */
    private Long totalExecutions;
    
    /**
     * 执行统计 - 成功次数
     */
    private Long successExecutions;
    
    /**
     * 执行统计 - 失败次数
     */
    private Long failedExecutions;
    
    /**
     * 执行统计 - 平均执行时间（毫秒）
     */
    private Double avgExecutionTime;
    
    /**
     * 最后执行时间
     */
    private Date lastExecutionTime;
    
    /**
     * 创建人
     */
    private String createBy;
    
    /**
     * 创建时间
     */
    private Date createTime;
    
    /**
     * 更新人
     */
    private String updateBy;
    
    /**
     * 更新时间
     */
    private Date updateTime;
}

